#include<bits/stdc++.h>
using namespace std;
int n;
struct node{int a,b,c,d,e,f_1,f_2;}p[10000];//f_1:1Server 2Client	f_2: -1ERR -2FAIL postive OK
void check(int x)
{
	char s[800];
	scanf("%s %d.%d.%d.%d:%d",s,&p[x].a,&p[x].b,&p[x].c,&p[x].d,&p[x].e);
	p[x].f_1=(s[0]=='C')+1;
	if(p[x].a>255||p[x].b>255||p[x].c>255||p[x].d>255||p[x].e>65535){p[x].f_2=-1;return;}
	if(p[x].f_1==1){
		for(int i=1;i<x;i++)
			if(p[i].f_1==1&&p[i].f_2>0&&p[x].a==p[i].a&&p[x].b==p[i].b&&p[x].c==p[i].c&&p[x].d==p[i].d&&p[x].e==p[i].e)
			{p[x].f_2=-2;return;}
		p[x].f_2=1;
	}
	else {
		for(int i=1;i<x;i++)
			if(p[i].f_1==1&&p[i].f_2>0&&p[x].a==p[i].a&&p[x].b==p[i].b&&p[x].c==p[i].c&&p[x].d==p[i].d&&p[x].e==p[i].e)
			{p[x].f_2=i;return;}
		p[x].f_2=-2;
	}
	return;
}
int main()
{
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		check(i);
		if(p[i].f_2==-1)printf("ERR\n");
		else if(p[i].f_2==-2)printf("FAIL\n");
		else if(p[i].f_1==1)printf("OK\n");
		else printf("%d\n",p[i].f_2);
	}
	return 0;
}
